﻿using System;

class BubbleSortProgram
{
    // 冒泡排序方法
    public static void BubbleSort(int[] array)
    {
        if (array == null || array.Length <= 1)
            return; // 空数组或只有一个元素的数组无需排序
        
        int n = array.Length;
        bool swapped;
        
        // 外层循环控制需要进行多少轮比较
        for (int i = 0; i < n - 1; i++)
        {
            swapped = false;
            
            // 内层循环进行每一轮的比较和交换
            for (int j = 0; j < n - i - 1; j++)
            {
                // 如果当前元素大于下一个元素，则交换它们
                if (array[j] > array[j + 1])
                {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                    swapped = true;
                }
            }
            
            // 如果在本轮中没有发生交换，说明数组已经有序，可以提前退出
            if (!swapped)
                break;
        }
    }
    
    // 程序入口点
    static void Main(string[] args)
    {
        Console.WriteLine("冒泡排序程序");
        Console.WriteLine("==============");
        
        // 测试数组
        int[] numbers = { 64, 34, 25, 12, 22, 11, 90 };
        
        Console.WriteLine("排序前的数组：");
        foreach (int num in numbers)
        {
            Console.Write(num + " ");
        }
        
        // 执行排序
        BubbleSort(numbers);
        
        Console.WriteLine("\n排序后的数组：");
        foreach (int num in numbers)
        {
            Console.Write(num + " ");
        }
        
        Console.WriteLine("\n\n程序结束，按任意键退出...");
        Console.ReadKey();
    }
}